package com.mazaiting.generator.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.mazaiting.generator.domain.entity.PropItemEntity;
import com.mazaiting.generator.domain.form.PropItemForm;
import com.mazaiting.generator.domain.query.PropItemQuery;
import com.mazaiting.generator.domain.vo.PropItemVO;
import com.mazaiting.mybatisplus.domain.vo.BasePageVO;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
import java.util.Map;

/**
 * 属性组
 *
 * @author mazaiting
 * @datetime 2022-11-15 00:08:43
 */
public interface IPropItemService extends IService<PropItemEntity> {

    /**
     * 分页数据
     *
     * @param propItemQuery 查询对象
     * @return 分页查询数据
     */
    BasePageVO<PropItemVO> page(PropItemQuery propItemQuery);

    /**
     * 新增数据
     *
     * @param propItemForm 表单数据
     * @return true: 新增成功; false: 新增失败
     */
    @Transactional(rollbackFor = Exception.class)
    boolean save(PropItemForm propItemForm);

    /**
     * 更新数据
     *
     * @param propItemForm 表单数据
     * @return true: 更新成功; false: 更新失败
     */
    @Transactional(rollbackFor = Exception.class)
    boolean update(PropItemForm propItemForm);

    /**
     * 删除数据
     *
     * @param ids ID 列表
     * @return true: 删除成功; false: 删除失败
     */
    @Transactional(rollbackFor = Exception.class)
    boolean deleteByIds(String ids);

    /**
     * 根据 ID 获取信息
     *
     * @param id ID
     * @return 信息
     */
    PropItemVO getInfoById(Long id);

    /**
     * 根据属性组 ID 查询属性
     *
     * @param propGroupId 属性组 ID
     * @return 属性列表
     */
    Map<String, String> queryByGroupId(Long propGroupId);

    /**
     * 根据属性组 ID 获取所有属性
     * @param groupId 属性组 ID
     */
    List<PropItemEntity> listByGroupId(Long groupId);

}